package 算法练习;

import java.util.Scanner;

/** 

* @author ：soulstones
* @version ：2019年9月11日 下午9:56:04 
* @Description：
* 
* 8
1
-2
3
10
-4
7
2
-5

输出
18

*/
public class 连续子数组最大和 {

		 public static void main(String[] args) {
		        Scanner sc = new Scanner(System.in);
		  
		        int N = sc.nextInt();
		        int[] nums = new int[N];
		        for (int i = 0; i < N; i++) {
		        	sc.nextLine();
		            nums[i] = sc.nextInt();
		        }
		  
		        int max = nums[0],sum = 0;
		        for(int i = 0;i < nums.length;i++){
		            sum += nums[i];
		            //更新
		            if(sum >=max)
		                max = sum;
		            //sum并不是记录最大连续和，只记录大于零的和，只要连续和小于0
		            //则重新开始计算和，因为nums[i]加上一个负数肯定比它本身小
		            if(sum < 0){
		                sum = 0;
		            }
		        }
		        System.out.println(max);
		    }
}
